namespace CollabApp.API.DTOs.Game;

/// <summary>
/// 创建团队模式游戏请求DTO
/// </summary>
public class CreateTeamGameRequest
{
    /// <summary>
    /// 房间ID
    /// </summary>
    public Guid RoomId { get; set; }

    /// <summary>
    /// 团队模式类型（"2v2", "3v3"）
    /// </summary>
    public string TeamMode { get; set; } = "2v2";

    /// <summary>
    /// 最大玩家数
    /// </summary>
    public int MaxPlayers { get; set; } = 4;

    /// <summary>
    /// 游戏时长（分钟）
    /// </summary>
    public double GameTimeMinutes { get; set; } = 3;

    /// <summary>
    /// 地图设置
    /// </summary>
    public MapSettings? MapSettings { get; set; }
}

/// <summary>
/// 创建生存模式游戏请求DTO
/// </summary>
public class CreateSurvivalGameRequest
{
    /// <summary>
    /// 房间ID
    /// </summary>
    public Guid RoomId { get; set; }

    /// <summary>
    /// 最大玩家数
    /// </summary>
    public int MaxPlayers { get; set; } = 6;

    /// <summary>
    /// 游戏时长（分钟）
    /// </summary>
    public double GameTimeMinutes { get; set; } = 5;

    /// <summary>
    /// 是否启用地图缩圈
    /// </summary>
    public bool EnableMapShrinking { get; set; } = true;

    /// <summary>
    /// 缩圈开始时间（游戏开始后秒数）
    /// </summary>
    public int ShrinkingStartTime { get; set; } = 180;
}

/// <summary>
/// 创建极速模式游戏请求DTO
/// </summary>
public class CreateSpeedGameRequest
{
    /// <summary>
    /// 房间ID
    /// </summary>
    public Guid RoomId { get; set; }

    /// <summary>
    /// 最大玩家数
    /// </summary>
    public int MaxPlayers { get; set; } = 6;

    /// <summary>
    /// 速度倍数
    /// </summary>
    public double SpeedMultiplier { get; set; } = 1.5;
}

/// <summary>
/// 地图设置DTO
/// </summary>
public class MapSettings
{
    /// <summary>
    /// 地图大小
    /// </summary>
    public int MapSize { get; set; } = 1000;

    /// <summary>
    /// 地图形状
    /// </summary>
    public string MapShape { get; set; } = "circle";

    /// <summary>
    /// 障碍物数量
    /// </summary>
    public int ObstacleCount { get; set; } = 3;

    /// <summary>
    /// 是否启用中心争夺区
    /// </summary>
    public bool EnableCenterZone { get; set; } = true;
}
